<?php
/**
 * 成果通知コントローラー
 *
 * @package  app
 * @extends  Controller
 */
require_once __DIR__ . '/../../thirdpirty/Fluent/Autoloader.php';
use Fluent\Logger\FluentLogger;

class Controller_Analyze extends Controller {
	/**
	 * 前処理
	 *
	 * @access  public
	 * @return  Response
	 */
	public function before() {
		parent::before();

		// ログ
		$log = array();
		$log['uri'] = Input::uri();
		$log['fromwhere'] = Cookie::get('fromwhere');
		$log['member_id'] = Cookie::get('member_id');
		$log = array_merge($log, Input::get());

		$td = Config::get('log_analyze');
		if( !empty($td)) {
			Fluent\Autoloader::register();
			$logger = new FluentLogger('unix:///var/run/td-agent/td-agent.sock');
			$logger -> post($td, $log);
		}
	}

	/**
	 * バナークリック
	 *
	 * @access  public
	 * @return  Response
	 */
	public function action_banner() {
		// トラッキング
		$q = Input::get('q');
		$fromwhere = isset($q) ? $q : 'none';
		Cookie::set('fromwhere', $fromwhere, 60*60*24*30);

		// OS判断
		$appinfo = Config::get('appinfo');
		$p = Input::get('p');
		$platform = isset($p) ? $p : 'ios';

		// storeページヘ遷移
		return Response::redirect($appinfo[$platform]['storeurl'], 'location', 301);
	}

	/**
	 * インストール
	 *
	 * @access  public
	 * @return  Response
	 */
	public function action_install() {
		try {
			// トラッキング
			$fromwhere = Cookie::get('fromwhere');

			// OS判断
			$appinfo = Config::get('appinfo');
			$p = Input::get('p');
			$platform = isset($p) ? $p : 'ios';

			// 記録
			$member_id = Input::get('i');
			if (!empty($member_id)) {
				$values = array();
				$values['member_id'] = $member_id;
				$values['action'] = 'installed';
				$values['key1'] = $fromwhere;
				$query = DB::Insert('member_action');
				$query -> set($values) -> execute();

				// 会員IDをクッキーに保存
				Cookie::set('member_id', $member_id, 60*60*24*30);
			} else {
				// アプリ側でmember_idを取り損なっている
				// 仮にmember_id=0で記憶
				$values = array();
				$values['member_id'] = 0;
				$values['action'] = 'installed';
				$values['key1'] = $fromwhere;
				$query = DB::Insert('member_action');
				$query -> set($values);
				$query -> execute();
				
			}
		} catch (Exception $e) {
			// 絶対アプリに遷移するよう、例外は握りつぶす
			// finallyが無いので…
		}
		
		// リダイレクト
		$url = $appinfo[$platform]['urlscheme']; // アプリ
		$url = sprintf(Config::get('imobile_conv'), urlencode(Config::get('imobile_sid')), urlencode($url)); // i-mobile成果発生ページ
		return Response::redirect($url, 'location', 301);
	}

}
